public class 策略模式 {
 public static void main(String[] args) {
  // 使用加法策略
  Context context = new Context(new AdditionStrategy());
  System.out.println("10 + 5 = " + context.executeStrategy(10, 5)); // 输出：10 + 5 = 15

  // 切换到减法策略
  context = new Context(new SubtractionStrategy());
  System.out.println("10 - 5 = " + context.executeStrategy(10, 5)); // 输出：10 - 5 = 5

  // 切换到乘法策略
  context = new Context(new MultiplicationStrategy());
  System.out.println("10 * 5 = " + context.executeStrategy(10, 5)); // 输出：10 * 5 = 50

 }


}
//策略接口
 interface  Strategy{
 /**
  * 执行具体算法的接口
  * @param num1 第一个参数
  * @param num2 第二个参数
  * @return 计算结果
  */
 int doOperation(int num1, int num2);
}

//策略实现
// 实现加法策略
 class AdditionStrategy implements Strategy {
 @Override
 public int doOperation(int num1, int num2) {
  return num1 + num2; // 返回两个数的加法结果
 }
}

// 实现减法策略
 class SubtractionStrategy implements Strategy {
 @Override
 public int doOperation(int num1, int num2) {
  return num1 - num2; // 返回两个数的减法结果
 }
}

// 实现乘法策略（可扩展的示例）
 class MultiplicationStrategy implements Strategy {
 @Override
 public int doOperation(int num1, int num2) {
  return num1 * num2; // 返回两个数的乘法结果
 }
}


//策略调用
class Context{

 private Strategy strategy;
 public  Context( Strategy strategy)
 {
  this.strategy = strategy;
 }
 //执行算法
 public int executeStrategy(int num1, int num2)
 {
  return strategy.doOperation(num1, num2);
 }

}